// hdu5847
// 题意：
// 你要生成n(<=2000)个正整数，满足任意子段和都不相同且每个数都不超过
// 3(n+6)。
//
// 题解：
// 很难的一道构造题。
// 令p是比n大的一个素数，x是小于p大于0的一个整数。
// 构造前缀和 sum[i]=2*p*i + (((i + 1)*i*x/2) % p)
// 这个构造可以证明，若 sum[i]-sum[j] = sum[k]-sum[l] 则一定有
// i=k且j=l。
// 这是分两段证明的，令 r[i]为sum[i]加号后面部分
//  1.首先，若 sum[i]-sum[j]=sum[k]-sum[l] 则i-j = k-l，因为后面部分
//    的r的差的绝对值不超过p，前面如果i-j!=k-l，那么差超过p，所以不可能相等；
//  2.其次，r[i]-r[j]-(r[k]-r[l]) 肯定要被p整除，展开就可以得到，
//    i+j=k+l。
// 综合就得道任意子段和不相同。
//
// 现在要使每个数尽量下，所以就枚举x，找到所有x中，生成数列中数最大值最小
// 就行。
//
// ml:run = $bin < input
#include <cstdio>
#include <unordered_set>
#include <algorithm>
#include <vector>
#include <cstdlib>
#include <ctime>

int const maxn = 5000;
bool vis[maxn];
int sum[maxn];
int n;
std::vector<int> prime;

void init()
{
    for (int i = 2; i < maxn; i++) {
        if (vis[i]) continue;
        prime.push_back(i);
        for (int j = i * i; j < maxn; j += i)
            vis[j] = true;
    }
}

bool check()
{
    std::unordered_set<int> all;
    for (int i = 1; i <= n; i++)
        if (sum[i] - sum[i - 1] >= 3 * n + 18) return false;
    for (int i = 1; i <= n; i++)
        for (int j = i; j <= n; j++)
            all.insert(sum[j] - sum[i - 1]);
    return (int)all.size() == n * (n + 1) / 2;
}

int main()
{
    std::srand(std::time(0));
    int T; std::scanf("%d", &T);
    init();
    while (T--) {
        std::scanf("%d", &n);
        int min = 1 << 28, tx;
        int p = *(std::upper_bound(prime.begin(), prime.end(), n));
        for (int x = 1; x < p; x++) {
            int max = 0, ts = 2 * p, ty = x;
            for (int i = 1; i <= n; i++) {
                sum[i] = ts + (ty % p);
                ts += 2 * p;
                ty += (i + 1) * x;
                max = std::max(max, sum[i] - sum[i - 1]);
                if (max >= min) break;
            }
            if (max < min) {
                min = max;
                tx = x;
            }
        }
        for (int i = 1; i <= n; i++)
            sum[i] = 2 * i * p + ((((i + 1) * i / 2) * tx) % p);

        /* if (!check()) { */
        /*     std::cout << "failed on " << n << "\n" << "where x = " << tx << "\n"; */
        /*     return 0; */
        /* } */
        /* continue; */

        for (int i = 1; i <= n; i++)
            std::printf("%d ", sum[i] - sum[i - 1]);
        std::printf("\n");
    }
}

